package io;

import java.io.*;

/**
 *    JAVA IO 将流按照读写单位划分为字节流与字符流
 *    字节流的超类:InputStream和OutputStream
 *    字符流的超类:Reader和Writer
 *
 *    字符流是以字符(char)为最小单位读写数据的,底层本质还是读写字节,只不过字符与字节的转换工作由字符流完成.
 *
 *    转换流:InputStreamReader和OutputStreamWriter
 *    转换流是非常常用的一对字符流实现类,虽然实际开发中我们几乎不会直接操作它们,但是在流连接中它们是非常重要的一环.
 *
 *    由于实际开发中其他的高级字符流在流链接中都只能连接在其他字符流上,而低级流都是字节流,
 *    这就导致无法直接进行串联.转换流本身是字符流,他们又可以直接连接在字节流上,因此其他字节
 *    流连接在它们上面就可以达到串联字节流的目的了.它相当于是"转换器"的作用.
 */
public class OSWDemo {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("osw.txt");
        /*
             转换流在进行流连接时通常会指定第二个参数用来明确字符集,这样通过它写出的字符都会按照该字符集转换为字节后写出
         */
        OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");

        //字符流可以直接写出字符串,无需再关心字符串转换字节操作
        osw.write("0000");
        osw.write(",1111");
        System.out.println("输出完毕");
        osw.close();

    }
}
